package com.kgc.sbt.utils;

import com.kgc.sbt.constant.SystemConstant;


/**
 * Created on 2021-07-27.
 * <p>
 * Author: zhukang
 * <p>
 * Description: 返回结果统一处理工具类
 */
public class ResultBuildUtil {

    /**
     * @return :
     * @author : zhukang
     * @date : 2021-07-27
     * @description : 返回成功，不带参数
     */
    public static <T> RequestResult<T> success() {
        return success(null);
    }


    /**
     * @return :
     * @author : zhukang
     * @date : 2021-07-27
     * @description : 返回成功，带参数
     */
    public static <T> RequestResult<T> success(T t) {
        // 创建统一返回类
        RequestResult<T> requestResult = new RequestResult<>();
        requestResult.setCode(SystemConstant.SYS_RESP_SUCCESS_CODE);
        requestResult.setMsg(SystemConstant.SYS_RESP_SUCCESS_MSG);
        // 将入参加入统一返回
        requestResult.setData(t);

        return requestResult;
    }

    /**
     * @return :
     * @author : zhukang
     * @date : 2021-07-27
     * @description : 返回失败，系统默认异常
     */
    public static <T> RequestResult<T> fail() {
        return fail(SystemConstant.SYS_RESP_FAIL_CODE, SystemConstant.SYS_RESP_FAIL_MSG);
    }

    /**
     * @return :
     * @author : zhukang
     * @date : 2021-07-27
     * @description : 返回失败，系统默认异常
     */
    public static <T> RequestResult<T> fail(T t) {
        return fail(SystemConstant.SYS_RESP_FAIL_CODE, SystemConstant.SYS_RESP_FAIL_MSG, t);
    }

    /**
     * @return :
     * @author : zhukang
     * @date : 2021-07-27
     * @description : 返回失败，系统默认异常
     */
    public static <T> RequestResult<T> fail(String errCode, String errMsg) {
        return fail(errCode, errMsg, null);
    }


    /**
     * @return :
     * @author : zhukang
     * @date : 2021-07-27
     * @description : 返回失败，带参数，自定义异常信息
     */
    public static <T> RequestResult<T> fail(String errCode, String errMsg, T t) {
        // 创建统一返回类
        RequestResult<T> requestResult = new RequestResult<>();
        requestResult.setCode(errCode);
        requestResult.setMsg(errMsg);
        requestResult.setData(t);

        return requestResult;
    }

}
